package com.example.demo.support;

import com.google.common.collect.Maps;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Map;

@EqualsAndHashCode(callSuper = true)
@Data
public class IMSetUserInfoResponse extends IMBaseResponse {

    private static final Map<Integer, String> ERROR_CODE_MESSAGE = Maps.newHashMap();

    static {
        ERROR_CODE_MESSAGE.put(40001, "请求参数错误，请根据错误描述检查请求参数");
        ERROR_CODE_MESSAGE.put(40003, "请求的用户帐号不存在");
        ERROR_CODE_MESSAGE.put(40004, "请求需要 App 管理员权限");
        ERROR_CODE_MESSAGE.put(40005, "资料字段中包含敏感词");
        ERROR_CODE_MESSAGE.put(40006, "服务器内部错误，请稍后重试");
        ERROR_CODE_MESSAGE.put(40008, "没有资料字段的写权限，详情可参见 资料字段");
        ERROR_CODE_MESSAGE.put(40009, "资料字段的 Tag 不存在");
        ERROR_CODE_MESSAGE.put(40601, "资料字段的 Value 长度超过500字节");
        ERROR_CODE_MESSAGE.put(40605, "标配资料字段的 Value错误，详情可参见 标配资料字段");
        ERROR_CODE_MESSAGE.put(40610, "资料字段的 Value 类型不匹配，详情可参见 标配资料字段");
    }

    // 详细的客户端展示信息
    protected String ErrorDisplay;

    @Override
    public String transformErrorCode(Integer errorCode) {
        String message = super.transformErrorCode(errorCode);
        if (message != null) {
            return message;
        }
        return ERROR_CODE_MESSAGE.getOrDefault(errorCode, "未知错误");
    }
}
